#include <iostream>
const int MAX_N = 1e5 + 10;
const int INF = 1e9 + 10;
int n;
int value[MAX_N];
int minRight[MAX_N];
int minLeft[MAX_N];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &value[i]);
}
minLeft[0] = 0 - 0;
for (int i = 1; i <= n + 1; i++) {
minLeft[i] = std::min(minLeft[i-1], value[i] - i);
}
minRight[n+1] = 0 + (n+1);
for (int i = n; i >= 0; i--) {
minRight[i] = std::min(minRight[i+1], value[i] + i);
}
int answer = 0;
for (int i = 1; i <= n; i++) {
int life = std::min(minLeft[i] + i, minRight[i] - i);
answer = std::max(answer, life);
}
printf("%d\n", answer);
}
766A - Mahmoud and Longest Uncommon Subsequence | 701B - Cells Not Under Attack |
702A - Maximum Increase | 1656D - K-good |
1426A - Floor Number | 876A - Trip For Meal |
1326B - Maximums | 1635C - Differential Sorting |
961A - Tetris | 1635B - Avoid Local Maximums |
20A - BerOS file system | 1637A - Sorting Parts |
509A - Maximum in Table | 1647C - Madoka and Childish Pranks |
689B - Mike and Shortcuts | 379B - New Year Present |
1498A - GCD Sum | 1277C - As Simple as One and Two |
1301A - Three Strings | 460A - Vasya and Socks |
1624C - Division by Two and Permutation | 1288A - Deadline |
1617A - Forbidden Subsequence | 914A - Perfect Squares |
873D - Merge Sort | 1251A - Broken Keyboard |
463B - Caisa and Pylons | 584A - Olesya and Rodion |
799A - Carrot Cakes | 1569B - Chess Tournament |